/*
 * Copyright 2009 Prime Technology.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.primefaces.facestrace.logging;

import org.primefaces.facestrace.TraceData;
import org.primefaces.facestrace.utils.TraceUtils;

import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.spi.LoggingEvent;

public class FacesTraceAppender extends AppenderSkeleton {

	//I've put the try catch block otherwise context does not starup because of
	//a npe in getting TraceData
	protected void append(LoggingEvent event) {
		try {
			String name = event.getLoggerName();
			String type = event.getLevel().toString();
			Object message = event.getMessage();
			TraceLogEvent traceLogEvent = new TraceLogEvent(name, type, message);
			getTraceData().getLogs().add(traceLogEvent);
		} catch (NullPointerException exception) {
			//do nothing for now
		}
	}

	public boolean requiresLayout() {
		return false;
	}

	public void close() {

	}

	private TraceData getTraceData() {
		return TraceUtils.getTraceData();
	}

}